#pragma once
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <array>
#include <chrono>
#include <thread>
#include <functional>
#include <locale>
#include <codecvt>
#include <cassert>
#include <ctime>
#include <random>
#include <sstream>
#include <iomanip>

#ifdef __linux__
#include <termios.h>
#elif _WIN32
#include <conio.h>
#endif

using namespace std::chrono_literals;

//----- 下面定义了按键宏--------------------
#define KEY_Q  'q'
#define KEY_W  'w'
#define KEY_S  's'
#define KEY_A  'a'
#define KEY_D  'd'
#define KEY_R  'r'
#define KEY_H  'h'
#define KEY_BS ' '
// TODO: 可以在这添加新键位

//----------------------------------------


typedef std::pair<int,int> PII;
using Matrix = std::vector<std::vector<int>>;
using Tetromino = std::vector<std::vector<PII>>;
